﻿// ---------------------------------------------------------------------
// Enum YMSE
//
// Nội dung:
//    + Định nghĩa các message giao tiếp giữa client với server
//
// Copyright (c) 2009 YugiOH
//
// Nguyễn Hữu Lê Trọng Tín      YM: ilu2009             ĐT: 0906520611 
// Võ Phước Hậu                 YM: phuochauspkt        ĐT: 0979202707
// ---------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Common
{
    public enum YMSG
    {
        GAME_BEGIN, // Bắt đầu game, gửi về ID của các người chơi
        GAME_CHIABAI, // Gửi về 5 lá bài
        GAME_CHIABAIXONG, // Báo cho server biết chia bài xong
        GAME_END, // Kết thúc game
        PLAYER_THAYDOIDIEM, // Có thể gửi cho cả 2 player kèm theo ID của player
        PLAYER_LOGIN,
        PLAYER_LOGOUT,
        CARD_INDECK,
        CARD_RUTBAI, // Gửi cho player nào rút bài 
        CARD_RUTBAI_XONG, // Player rút bài xong gửi về cho server, server gửi message này về cho player kia
        CARD_RUTBAI_DOITHU,
        CARD_LENBAI, // Gửi cho player lên bài
        CARD_LENBAI_HOPLE,  // Gửi nếu lên bài hợp lệ
        CARD_LENBAI_KHONGHOPLE, // Gửi nếu lên bài không hợp lệ
        CARD_LENBAI_XONG, // Player lên bài xong gửi về cho server, server gửi message này về cho player kia
        CARD_DOITRANGTHAI, // Player gửi về server báo đổi trạng thái lá bài
        CARD_DOITRANGTHAI_XONG, // Gửi cho player kia biết là đổi trạng thái bài của player này
        CARD_TANCONG,  // Gửi về cho server biết là tấn công, kèm theo 2 lá bài, gồm lá đầu tiên là lá tấn công, và lá thứ 2 là bị tấn công
        CARD_TANCONG_TRUCTIEP,  // Gửi về cho server biết là tấn công trực tiếp (ID lá tan cong)
        CARD_XOABAI, // Server gửi về cho client biết là xóa lá nào
        CARD_XOABAI_DOITHU_TAY,
        CARD_XOABAI_TAY,
        CARD_XOABAI_GRAVEYARD,
        CARD_TRANGTHAI_DUNG_MO, // Trang thái của lá bài khi đang đứng mở
        CARD_TRANGTHAI_NAM_MO, // Trang thái của lá bài khi đang nằm mở
        CARD_TRANGTHAI_DUNG_UP, // Trang thái của lá bài khi đang đứng úp
        CARD_TRANGTHAI_NAM_UP, // Trang thái của lá bài khi đang nằm úp
        TURN_DRAWPHASE_BEGIN, // bắt đầu drawphase
        TURN_DRAWPHASE_END, // kết thúc drawphase
        TURN_STANDBYPHASE_BEGIN, //  bắt đầu standby phase
        TURN_STANDBYPHASE_END, // kết thúc standby phase
        TURN_BATTLEPHASE_BEGIN, // bắt đầu battle phase
        TURN_BATTLEPHASE_END, // kết thúc battle phase
        TURN_MAINPHASE1_BEGIN, // bắt đầu main phase 1
        TURN_MAINPHASE1_END, // kết thúc main phase 1
        TURN_MAINPHASE2_BEGIN, // bắt đầu main phase 2
        TURN_MAINPHASE2_END, // kết thúc main phase 2
        TURN_BEGINTURN, // bắt đầu turn, gửi kèm ID của player nào tới lượt
        TURN_ENDTURN, // kết thúc turn, gửi kèm ID của player nào hết lượt
        TURN_SKIP,
        //------------------------------------------GD2------------------------------------------//

        CARD_LENBAI_SUMMONDACBIET,     // gửi về cho server biết là lên bài summon đặc biệt, kèm theo ID các lá thế
        CARD_LENBAI_SUMMONDACBIET_XONG, // gửi cho client biết là lên bài summon đặc biệt xong
        CARD_LENBAI_SUMMONDACBIET_HOPLE, // lên bài summon đặc biệt hợp lệ
        CARD_LENBAI_SUMMONDACBIET_KHONGHOPLE, // lên bài summon đặc biệt ko hợp lệ
        CARD_LENBAI_SPELL, // gửi về cho server biết là lên bài magic
        CARD_LENBAI_SPELL_XONG,// gửi cho client biết là lên bài magic xong
        CARD_LENBAI_SPELL_HOPLE,
        CARD_LENBAI_SPELL_KHONGHOPLE, // gui cho client biết là lên bài magic không hợp lệ
        CARD_LENBAI_TRAP, // gửi về cho server biết là lên bài magic
        CARD_LENBAI_TRAP_XONG,// gửi cho client biết là lên bài magic xong
        CARD_LENBAI_TRAP_HOPLE,
        CARD_LENBAI_TRAP_KHONGHOPLE, // gui cho client biết là lên bài magic không hợp lệ
     


        //------------------------------------------ANIMATION------------------------------------------//

        ANIMATION_CARD_TANCONG, //gửi về cho client chạy animation tấn công
        ANIMATION_CARD_TANCONG_TRUCTIEP,//gửi về cho client chạy animation tấn công trực tiếp



        //------------------------------------------API------------------------------------------//

        CARD_SETCONG, // gửi về cho client set điểm tấn công cho lá bài
        CARD_SETTHU, // gửi về cho client set điểm phòng thủ cho lá bài
        API_DRAWCARD,// Gửi ve cho 2 Player biết có Rut bài     
        API_SPECIALSUMMON,// Gửi ve cho 2 Player biet co Special Summon
        API_SPECIALSUMMON_XONG, // Client gui len cho server biet da len bai special xong
        API_CHANGECONTROL,// Gui ve cho 2 Player biet có sự chuyển quyền điều khiển
        API_DISCARD,
        API_MOVECARD,
        API_MOVECARD_DOITHU,

        //--------------------------------------------REQUEST-------------------------------------//
        REQUEST_CHONBAI_NGUOICHOI_TAY, // gửi yêu cầu chọn 1 lá trên tay người chơi
        REQUEST_CHONBAI_NGUOICHOI_BAN, // gửi yêu cầu chọn 1 lá trên bàn người chơi
        REQUEST_CHONBAI_DOITHU_TAY,// gửi yêu cầu chọn 1 lá trên tay đối thủ
        REQUEST_CHONBAI_DOITHU_BAN,// gửi yêu cầu chọn 1 lá trên bàn đối thủ
        REQUEST_CHONBAI_TRENBAN,// gửi yêu cầu chọn 1 lá trên bàn của cả 2 ben
        REQUEST_CHONBAI_DANHSACH,// Gui yeu cau chon x lá bài trong danh sach ID
        REQUEST_ASK,

        //--------------------------------------------RESPONE-------------------------------------//
        RESPONE_CHONBAI_NGUOICHOI_TAY, //gửi trả lời chọn 1 lá trên tay người chơi
        RESPONE_CHONBAI_NGUOICHOI_BAN,//gửi trả lời chọn 1 lá trên bàn người chơi
        RESPONE_CHONBAI_DOITHU_TAY,//gửi trả lời chọn 1 lá trên tay đối thủ
        RESPONE_CHONBAI_DOITHU_BAN,//gửi trả lời chọn 1 lá trên bàn đối thủ
        RESPONE_CHONBAI_TRENBAN,
        RESPONE_CANCEL,
        RESPONE_CHONBAI_DANHSACH,// Giửi trả lời những lá bài người chơi chọn
        RESPONE_ASK,

        //--------------------------------------------BLOCK-------------------------------------//
        DF_BLOCK,
        SF_BLOCK,
        MF1_BLOCK,
        BF_BLOCK,
        MF2_BLOCK,
        //-------------------------------------------EFFECT TRAP,SPELL...----------------------//
        CARD_LIST_CANEXCUTE,
        CARD_WAITING_ACTIVE,
        CARD_WAITING_ACTIVE_BEGIN,
        CARD_WAITING_ACTIVE_END,
        CARD_EXCUTE_SPELL,
        CARD_EXCUTE_TRAP,
        CARD_EXCUTE_SUMMON,
        CARD_MOVETO_GRAVEYARD,

        //--------------------------------------------CONNECTION-------------------------------//
        ISDISCONNECT,
        IMCONNECTING,
        CHECKSUM,
        //--------------------------------------------GAME-------------------------------------//
        GAME_RESET,

        // Oan tu xi
        RPS_Hand,
        RPS_Chose,
        RPS_Finish,
        RPS_CanClick
    }

    /// <summary>
    /// Enum Zone Chỉ các vùng trên bàn chơi
    /// </summary>
    public enum Zone
    {
        HAND,
        DECK,
        TABLE,
        GRAVEYARD,
        OUTZONE
    }
}
